/*
 * @Author: Await
 * @Date: 2025-04-17 15:15:15
 * @LastEditors: Await
 * @LastEditTime: 2025-05-06 21:20:00
 * @Description: 类型定义
 */

// 单个导出汇总模块
// 这样不用在每个文件中分别导入不同的类型文件
// 方便统一管理类型

export * from './dataTypes';
export * from './chartTypes';
export * from './editorTypes';

// --- 其他全局共享类型 ---

// 扩展全局Window接口，添加echarts属性
declare global {
  interface Window {
    echarts: any;
  }
}

/**
 * 主题选项
 */
export type ThemeOption = 'light' | 'dark' | 'default' | string | object;

/**
 * 渲染器选项
 */
export type RendererOption = 'canvas' | 'svg';

/**
 * 通用坐标类型
 */
export type Position = 'top' | 'bottom' | 'left' | 'right' | 'insideLeft' | 'insideRight' | 'insideTop' | 'insideBottom' | string;

/**
 * 文本样式
 */
export interface TextStyle {
  color?: string;
  fontStyle?: 'normal' | 'italic' | 'oblique';
  fontWeight?: 'normal' | 'bold' | 'bolder' | 'lighter' | number;
  fontFamily?: string;
  fontSize?: number;
  lineHeight?: number;
  backgroundColor?: string;
  borderRadius?: number;
  padding?: number | number[];
  [key: string]: any;
}

/**
 * 可用的导出类型
 */
export type ExportType = 'png' | 'jpeg' | 'svg';

/**
 * 图表预览配置
 */
export interface PreviewOptions {
  theme?: ThemeOption;
  renderer?: RendererOption;
  animation?: boolean;
  darkMode?: boolean;
}

/**
 * echarts-gl 模块声明
 * 提供更详细的类型声明以解决导入问题
 */
declare module 'echarts-gl' {
  // 空导出，表示模块存在但不关心其具体内容
  const _default: any;
  export = _default;
  export const Bar3DChart: any;
  export const Line3DChart: any;
  export const Scatter3DChart: any;
  export const Lines3DChart: any;
  export const Grid3DComponent: any;
  export const Axis3DComponent: any;
}
